1. Field of the Invention
The present invention relates, in general, to computers connected through one or more networks. More specifically, the present invention relates to discovery of computer systems in a network by using an object-oriented framework.
2. Background of the Invention
Computers have become indispensable in many fields of human endeavor including engineering design, machine and process control, and information storage and access. In the early days of computers, companies such as banks, industry, and the government would purchase a single computer which satisfied their needs, but by the early 1950's many companies had multiple computers and the need to move data from one computer to another became apparent. At this time, computer networks began being developed to allow computers to work together.
Computer networks are capable of performing jobs that no single computer could perform, and they allow low cost personal computer systems to connect to larger systems to perform tasks that such low cost systems could not perform alone. In order for computer systems to cooperate in a network, there are times when it is beneficial to find particular computer systems in the network.
For instance, a systems administrator might wish to manage all of the File Transfer Protocol (FTP) servers in a network. For example, he or she may wish to add files to the servers. In order for the system administrator to add files to these servers, it would be beneficial to know how many FTP servers there are in the network and how to contact these servers. Similarly, if a person would like to send an update to all computers in the network that are running a particular operating system, this person would like to find computers in the network that have this operating system. Additionally, perhaps the update is written for a certain version of a program that runs on this operating system. In this case, the person would additionally like to find only those computers that have the operating system, the program, and this exact version of the program.
In some network tools, it is possible for the system administrator or another person to create and define a computer system in the tool. This effectively allows the tool, and the computer on which the tool resides, to contact and manage the newly added computer system. While this can be a benefit for small networks, this can be quite problematic for large or very large networks. Some networks can consist of thousands of computers, and it is very hard for system administrators to create and define all of these computers. This is particularly true, for example, because minor changes to a computer system may make the previously defined computer system hard to locate. For instance, if the system administrator calls a computer system “West_Coast—101” and the person using this computer system changes the computer's networking name to “Frank's Computer,” any tool or program looking for “West_Coast—101” will not find “Frank's Computer.”
Because of the problems inherent in managing or using large networks, some system administrators and programmers have used custom-made programs that discover computer systems in a network. These programs can search on the network for certain types of computers. Generally this search is performed by using a communications protocol to attempt to locate computers that use this protocol. For instance, a program written to use the popular Internet Protocol (IP) might broadcast a message on the network that asks for a response. Those computers that respond to the request are then cataloged by the program. Alternatively, because the range of IP addresses in a network is known, the program could send a message to each IP address in the network. Through certain techniques, the program could determine whether there is a computer at one or more of these addresses. Additionally, it is possible to combine both techniques to provide a very good discovery system.
Once the computers in the network are cataloged, the program will usually then make an additional determination. The application that will be using the computer systems in the network may only want computer systems that have a particular operating system or version thereof, or a particular piece of software or a version thereof. The program must make the additional determination of whether each computer meets the criteria set by the application. This determination process is called “validation.” If the computer is valid, the program adds the computer to a final list of valid computers. This list is then given to the application for use by the application. For certain networks, where merely finding a system ensures that it is valid for use by an application, validation need not be performed.
Thus, one solution to managing and using large networks is automatic discovery (and validation, if needed) of computer systems. Automated discovery is also used in small networks, as it makes the system administrator's job easier.
Because these programs that perform discovery and validation are written for particular communications protocols and application criteria, additional programs need to be rewritten every time a new communication protocol or new application criteria are developed. Additionally, changes to communications protocols or application criteria necessitate incremental changes in the programs. With the current pace of technology, operating systems and communications protocols that are even a few years old have usually been changed multiple times and may be obsolete.
While automatic discovery and validation programs can find and validate computers in a network, they must be rewritten frequently to keep up with the changes in technology. Without a mechanism that can be readily customized and extended to provide for discovery and validation of computers in a network, programmers will be constantly making wholesale changes to or creating new programs to discover and validate systems in a network.